/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


/*************************************************************************
 *\author: starlove
 *************************************************************************/
#ifndef __CC_PYTHON_IMPORT_O_TRANSITIONS_IMPL__
#define __CC_PYTHON_IMPORT_O_TRANSITIONS_IMPL__

#include "python_object_transition.h"

NS_CCPY_BEGIN

#define TRANSITION_SCENE_INIT(otype, cc_type)\
	int otype::__init__(otype *pySelf, PyObject *pyArgs, PyObject *pyKW)\
	{\
		if( !pyArgs )\
			return 0;\
		static char* kwlist[] = {"t", "scene", NULL};\
		float t = 0;\
		PyObject *pyScene = NULL;\
		if(!PyArg_ParseTupleAndKeywords(pyArgs,pyKW,"fO",kwlist, &t, &pyScene))\
			return 0;\
		if(!PyObject_TypeCheck(pyScene, CPyClassBase::GetTypeObject<CPyScene>()))\
			return 0;\
		CPyScene *scene_obj = (CPyScene *)pyScene;\
		CCScene *scene = dynamic_cast<CCScene *>(scene_obj->getCCObject());\
		if(!scene)\
			return 0;\
		CC_METHOD_WRAPPER_GETER_RINT(cc_type *, otype, initWithDuration, bool, t, scene);\
		return 0;\
	}\
	
#define TRANSITION_ORIENTATION_SCENE_INIT(otype, cc_type, def)\
	int otype::__init__(otype *pySelf, PyObject *pyArgs, PyObject *pyKW)\
	{\
		if( !pyArgs )\
			return 0;\
		static char* kwlist[] = {"t", "scene", "orientation", NULL};\
		float t = 0;\
		PyObject *pyScene = NULL;\
		int orientation = static_cast<int>(def);\
		if(!PyArg_ParseTupleAndKeywords(pyArgs, pyKW, "fO|i", kwlist, &t, &pyScene, &orientation))\
			return 0;\
		if(!PyObject_TypeCheck(pyScene, CPyClassBase::GetTypeObject<CPyScene>()))\
			return 0;\
		CPyScene *scene_obj = (CPyScene *)pyScene;\
		CCScene *scene = dynamic_cast<CCScene *>(scene_obj->getCCObject());\
		if(!scene)\
			return 0;\
		CC_METHOD_WRAPPER_GETER_RINT(cc_type *, otype, initWithDuration, bool, t, scene, static_cast<tOrientation>(orientation));\
		return 0;\
	}\

	PYCLASS_INIT_F(CPyTransitionEaseScene, "CCTransitionEaseScene", "Python CCTransitionEaseScene Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionEaseScene)
	PYCLASS_ADD_METHOD(CPyTransitionEaseScene, easeActionWithAction)
	PYCLASS_END_METHOD_DEF(CPyTransitionEaseScene)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionEaseScene)
	PYCLASS_END_GETSET_DEF(CPyTransitionEaseScene)
	PYCLASS_IMP_INTERFACE(CPyTransitionEaseScene)

	PYCLASS_METHOD_IMPL(CPyTransitionEaseScene, easeActionWithAction)
	{
		PyObject *pyAction = NULL;
		if( !PyArg_ParseTuple(pyArgs, "O", &pyAction) )
			Py_RETURN_NONE;

		if(!PyObject_TypeCheck(pyAction, CPyClassBase::GetTypeObject<CPyActionInterval>()))
			Py_RETURN_NONE;
		
		if(!PyObject_TypeCheck(pySelf, CPyClassBase::GetTypeObject<CPyCCObject>()))
			Py_RETURN_NONE;
		
		CPyActionInterval *actionobj = (CPyActionInterval *)pyAction;
		CPyCCObject *obj = (CPyCCObject *)pySelf;
		CCActionInterval *action = dynamic_cast<CCActionInterval *>(actionobj->getCCObject());
		CCTransitionEaseScene *scene = dynamic_cast<CCTransitionEaseScene *>(obj->getCCObject());
		if(!scene || !action)
			Py_RETURN_NONE;
		
		return (PyObject *)CPyCCObject::create<CPyActionInterval>(scene->easeActionWithAction(action));
	}
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionScene, CPyTransitionScene)
	PYCLASS_INIT_AND_BASE(CPyTransitionScene, CPyScene, "CCTransitionScene", "Python CCTransitionScene Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionScene)
		PYCLASS_ADD_METHOD(CPyTransitionScene, finish)
		PYCLASS_ADD_METHOD(CPyTransitionScene, hideOutShowIn)
	PYCLASS_END_METHOD_DEF(CPyTransitionScene)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionScene)
	PYCLASS_END_GETSET_DEF(CPyTransitionScene)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionScene)	
	TRANSITION_SCENE_INIT(CPyTransitionScene, CCTransitionScene)

	PYCLASS_METHOD_IMPL(CPyTransitionScene, finish)
	{
		CC_METHOD_WRAPPER_SETER(cocos2d::CCTransitionScene *, CPyTransitionScene, finish);
		Py_RETURN_NONE;
	}

	PYCLASS_METHOD_IMPL(CPyTransitionScene, hideOutShowIn)
	{
		CC_METHOD_WRAPPER_SETER(cocos2d::CCTransitionScene *, CPyTransitionScene, hideOutShowIn);
		Py_RETURN_NONE;
	}
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSceneOriented, CPyTransitionSceneOriented)
	PYCLASS_INIT_AND_BASE(CPyTransitionSceneOriented, CPyTransitionScene, "CCTransitionSceneOriented", "Python CCTransitionSceneOriented Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSceneOriented)
	PYCLASS_END_METHOD_DEF(CPyTransitionSceneOriented)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSceneOriented)
	PYCLASS_END_GETSET_DEF(CPyTransitionSceneOriented)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSceneOriented)
	
	int CPyTransitionSceneOriented::__init__(CPyTransitionSceneOriented *pySelf, PyObject *pyArgs, PyObject *pyKW)
	{
		if( !pyArgs )
			return 0;
		static char* kwlist[] = {"t", "scene", "orientation", NULL};
		float t = 0;
		PyObject *pyScene = NULL;
		int orientation = 0;
		if(!PyArg_ParseTupleAndKeywords(pyArgs, pyKW, "fOi", kwlist, &t, &pyScene, &orientation))
			return 0;
		if(!PyObject_TypeCheck(pyScene, CPyClassBase::GetTypeObject<CPyScene>()))
			return 0;

		CPyScene *scene_obj = (CPyScene *)pyScene;
		CCScene *scene = dynamic_cast<CCScene *>(scene_obj->getCCObject());
		if(!scene)
			return 0;
		CC_METHOD_WRAPPER_GETER_RINT(cocos2d::CCTransitionSceneOriented *, CPyTransitionSceneOriented, initWithDuration, bool, t, scene
			, static_cast<tOrientation>(orientation));
		return 0;
	}

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionRotoZoom, CPyTransitionRotoZoom)
	PYCLASS_INIT_AND_BASE(CPyTransitionRotoZoom, CPyTransitionScene, "CCTransitionRotoZoom", "Python CCTransitionRotoZoom Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionRotoZoom)
	PYCLASS_END_METHOD_DEF(CPyTransitionRotoZoom)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionRotoZoom)
	PYCLASS_END_GETSET_DEF(CPyTransitionRotoZoom)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionRotoZoom)	
	TRANSITION_SCENE_INIT(CPyTransitionRotoZoom, CCTransitionRotoZoom)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionJumpZoom, CPyTransitionJumpZoom)
	PYCLASS_INIT_AND_BASE(CPyTransitionJumpZoom, CPyTransitionScene, "CCTransitionJumpZoom", "Python CCTransitionJumpZoom Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionJumpZoom)
	PYCLASS_END_METHOD_DEF(CPyTransitionJumpZoom)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionJumpZoom)
	PYCLASS_END_GETSET_DEF(CPyTransitionJumpZoom)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionJumpZoom)	
	TRANSITION_SCENE_INIT(CPyTransitionJumpZoom, CCTransitionJumpZoom)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionMoveInL, CPyTransitionMoveInL)
	PYCLASS_INIT_AND_BASE_2(CPyTransitionMoveInL, CPyTransitionScene, CPyTransitionEaseScene, "CCTransitionMoveInL", "Python CCTransitionMoveInL Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionMoveInL)
		PYCLASS_ADD_METHOD(CPyTransitionMoveInL, action)
		PYCLASS_ADD_METHOD(CPyTransitionMoveInL, initScenes)
	PYCLASS_END_METHOD_DEF(CPyTransitionMoveInL)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionMoveInL)
	PYCLASS_END_GETSET_DEF(CPyTransitionMoveInL)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionMoveInL)	
	TRANSITION_SCENE_INIT(CPyTransitionMoveInL, CCTransitionMoveInL)
	
	PYCLASS_METHOD_IMPL(CPyTransitionMoveInL, action)
	{
		CC_METHOD_WRAPPER_GETER(cocos2d::CCTransitionMoveInL *, CPyTransitionMoveInL, action, CCActionInterval*);
		if(v)
			return (PyObject *)CPyCCObject::create<CPyActionInterval>(v);
		Py_RETURN_NONE;
	}

	PYCLASS_METHOD_IMPL(CPyTransitionMoveInL, initScenes)
	{
		CC_METHOD_WRAPPER_SETER(cocos2d::CCTransitionMoveInL *, CPyTransitionMoveInL, initScenes);
		Py_RETURN_NONE;
	}

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionMoveInR, CPyTransitionMoveInR)
	PYCLASS_INIT_AND_BASE(CPyTransitionMoveInR, CPyTransitionMoveInL, "CCTransitionMoveInR", "Python CCTransitionMoveInR Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionMoveInR)
	PYCLASS_END_METHOD_DEF(CPyTransitionMoveInR)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionMoveInR)
	PYCLASS_END_GETSET_DEF(CPyTransitionMoveInR)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionMoveInR)	
	TRANSITION_SCENE_INIT(CPyTransitionMoveInR, CCTransitionMoveInR)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionMoveInT, CPyTransitionMoveInT)
	PYCLASS_INIT_AND_BASE(CPyTransitionMoveInT, CPyTransitionMoveInL, "CCTransitionMoveInT", "Python CCTransitionMoveInT Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionMoveInT)
	PYCLASS_END_METHOD_DEF(CPyTransitionMoveInT)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionMoveInT)
	PYCLASS_END_GETSET_DEF(CPyTransitionMoveInT)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionMoveInT)	
	TRANSITION_SCENE_INIT(CPyTransitionMoveInT, CCTransitionMoveInT)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionMoveInB, CPyTransitionMoveInB)
	PYCLASS_INIT_AND_BASE(CPyTransitionMoveInB, CPyTransitionMoveInL, "CCTransitionMoveInB", "Python CCTransitionMoveInB Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionMoveInB)
	PYCLASS_END_METHOD_DEF(CPyTransitionMoveInB)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionMoveInB)
	PYCLASS_END_GETSET_DEF(CPyTransitionMoveInB)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionMoveInB)	
	TRANSITION_SCENE_INIT(CPyTransitionMoveInB, CCTransitionMoveInB)

	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSlideInL, CPyTransitionSlideInL)
	PYCLASS_INIT_AND_BASE_2(CPyTransitionSlideInL, CPyTransitionScene, CPyTransitionEaseScene, "CCTransitionSlideInL", "Python CCTransitionSlideInL Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSlideInL)
		PYCLASS_ADD_METHOD(CPyTransitionSlideInL, action)
		PYCLASS_ADD_METHOD(CPyTransitionSlideInL, initScenes)
	PYCLASS_END_METHOD_DEF(CPyTransitionSlideInL)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSlideInL)
	PYCLASS_END_GETSET_DEF(CPyTransitionSlideInL)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSlideInL)	
	TRANSITION_SCENE_INIT(CPyTransitionSlideInL, CCTransitionSlideInL)
	
	PYCLASS_METHOD_IMPL(CPyTransitionSlideInL, action)
	{
		CC_METHOD_WRAPPER_GETER(cocos2d::CCTransitionSlideInL *, CPyTransitionSlideInL, action, CCActionInterval*);
		if(v)
			return (PyObject *)CPyCCObject::create<CPyActionInterval>(v);
		Py_RETURN_NONE;
	}

	PYCLASS_METHOD_IMPL(CPyTransitionSlideInL, initScenes)
	{
		CC_METHOD_WRAPPER_SETER(cocos2d::CCTransitionSlideInL *, CPyTransitionSlideInL, initScenes);
		Py_RETURN_NONE;
	}

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSlideInR, CPyTransitionSlideInR)
	PYCLASS_INIT_AND_BASE(CPyTransitionSlideInR, CPyTransitionSlideInL, "CCTransitionSlideInR", "Python CCTransitionSlideInR Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSlideInR)
	PYCLASS_END_METHOD_DEF(CPyTransitionSlideInR)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSlideInR)
	PYCLASS_END_GETSET_DEF(CPyTransitionSlideInR)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSlideInR)	
	TRANSITION_SCENE_INIT(CPyTransitionSlideInR, CCTransitionSlideInR)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSlideInT, CPyTransitionSlideInT)
	PYCLASS_INIT_AND_BASE(CPyTransitionSlideInT, CPyTransitionMoveInL, "CCTransitionSlideInT", "Python CCTransitionSlideInT Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSlideInT)
	PYCLASS_END_METHOD_DEF(CPyTransitionSlideInT)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSlideInT)
	PYCLASS_END_GETSET_DEF(CPyTransitionSlideInT)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSlideInT)	
	TRANSITION_SCENE_INIT(CPyTransitionSlideInT, CCTransitionSlideInT)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSlideInB, CPyTransitionSlideInB)
	PYCLASS_INIT_AND_BASE(CPyTransitionSlideInB, CPyTransitionMoveInL, "CCTransitionSlideInB", "Python CCTransitionSlideInB Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSlideInB)
	PYCLASS_END_METHOD_DEF(CPyTransitionSlideInB)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSlideInB)
	PYCLASS_END_GETSET_DEF(CPyTransitionSlideInB)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSlideInB)	
	TRANSITION_SCENE_INIT(CPyTransitionSlideInB, CCTransitionSlideInB)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionShrinkGrow, CPyTransitionShrinkGrow)
	PYCLASS_INIT_AND_BASE_2(CPyTransitionShrinkGrow, CPyTransitionScene, CPyTransitionEaseScene, "CCTransitionShrinkGrow", "Python CCTransitionShrinkGrow Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionShrinkGrow)
	PYCLASS_END_METHOD_DEF(CPyTransitionShrinkGrow)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionShrinkGrow)
	PYCLASS_END_GETSET_DEF(CPyTransitionShrinkGrow)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionShrinkGrow)
	TRANSITION_SCENE_INIT(CPyTransitionShrinkGrow, CCTransitionShrinkGrow)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFlipX, CPyTransitionFlipX)
	PYCLASS_INIT_AND_BASE(CPyTransitionFlipX, CPyTransitionSceneOriented, "CCTransitionFlipX", "Python CCTransitionFlipX Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFlipX)
	PYCLASS_END_METHOD_DEF(CPyTransitionFlipX)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFlipX)
	PYCLASS_END_GETSET_DEF(CPyTransitionFlipX)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFlipX)
	TRANSITION_ORIENTATION_SCENE_INIT(CPyTransitionFlipX, CCTransitionFlipX, kCCTransitionOrientationRightOver)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFlipY, CPyTransitionFlipY)
	PYCLASS_INIT_AND_BASE(CPyTransitionFlipY, CPyTransitionSceneOriented, "CCTransitionFlipY", "Python CCTransitionFlipY Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFlipY)
	PYCLASS_END_METHOD_DEF(CPyTransitionFlipY)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFlipY)
	PYCLASS_END_GETSET_DEF(CPyTransitionFlipY)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFlipY)
	TRANSITION_ORIENTATION_SCENE_INIT(CPyTransitionFlipY, CCTransitionFlipY, kCCTransitionOrientationUpOver)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFlipAngular, CPyTransitionFlipAngular)
	PYCLASS_INIT_AND_BASE(CPyTransitionFlipAngular, CPyTransitionSceneOriented, "CCTransitionFlipAngular", "Python CCTransitionFlipAngular Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFlipAngular)
	PYCLASS_END_METHOD_DEF(CPyTransitionFlipAngular)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFlipAngular)
	PYCLASS_END_GETSET_DEF(CPyTransitionFlipAngular)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFlipAngular)
	TRANSITION_ORIENTATION_SCENE_INIT(CPyTransitionFlipAngular, CCTransitionFlipAngular, kCCTransitionOrientationRightOver)
		
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionZoomFlipX, CPyTransitionZoomFlipX)
	PYCLASS_INIT_AND_BASE(CPyTransitionZoomFlipX, CPyTransitionSceneOriented, "CCTransitionZoomFlipX", "Python CCTransitionZoomFlipX Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionZoomFlipX)
	PYCLASS_END_METHOD_DEF(CPyTransitionZoomFlipX)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionZoomFlipX)
	PYCLASS_END_GETSET_DEF(CPyTransitionZoomFlipX)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionZoomFlipX)
	TRANSITION_ORIENTATION_SCENE_INIT(CPyTransitionZoomFlipX, CCTransitionZoomFlipX, kCCTransitionOrientationRightOver)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionZoomFlipY, CPyTransitionZoomFlipY)
	PYCLASS_INIT_AND_BASE(CPyTransitionZoomFlipY, CPyTransitionSceneOriented, "CCTransitionZoomFlipY", "Python CCTransitionZoomFlipY Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionZoomFlipY)
	PYCLASS_END_METHOD_DEF(CPyTransitionZoomFlipY)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionZoomFlipY)
	PYCLASS_END_GETSET_DEF(CPyTransitionZoomFlipY)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionZoomFlipY)
	TRANSITION_ORIENTATION_SCENE_INIT(CPyTransitionZoomFlipY, CCTransitionZoomFlipY, kCCTransitionOrientationUpOver)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionZoomFlipAngular, CPyTransitionZoomFlipAngular)
	PYCLASS_INIT_AND_BASE(CPyTransitionZoomFlipAngular, CPyTransitionSceneOriented, "CCTransitionZoomFlipAngular", "Python CCTransitionZoomFlipAngular Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionZoomFlipAngular)
	PYCLASS_END_METHOD_DEF(CPyTransitionZoomFlipAngular)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionZoomFlipAngular)
	PYCLASS_END_GETSET_DEF(CPyTransitionZoomFlipAngular)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionZoomFlipAngular)
	TRANSITION_ORIENTATION_SCENE_INIT(CPyTransitionZoomFlipAngular, CCTransitionZoomFlipAngular, kCCTransitionOrientationRightOver)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFade, CPyTransitionFade)
	PYCLASS_INIT_AND_BASE(CPyTransitionFade, CPyTransitionScene, "CCTransitionFade", "Python CCTransitionFade Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFade)
	PYCLASS_END_METHOD_DEF(CPyTransitionFade)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFade)
	PYCLASS_END_GETSET_DEF(CPyTransitionFade)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFade)
	int CPyTransitionFade::__init__(CPyTransitionFade *pySelf, PyObject *pyArgs, PyObject *pyKW)
	{
		if( !pyArgs )
			return 0;
		static char* kwlist[] = {"t", "scene", "color", NULL};
		float t = 0;
		PyObject *pyScene = NULL;
		PyObject *pyColor = NULL;
		if(!PyArg_ParseTupleAndKeywords(pyArgs, pyKW, "fO|O", kwlist, &t, &pyScene, &pyColor))
			return 0;
		if(!PyObject_TypeCheck(pyScene, CPyClassBase::GetTypeObject<CPyScene>()))
			return 0;
		if(pyColor && !PyObject_TypeCheck(pyColor, CPyClassBase::GetTypeObject<CPyColor3B>()))
			return 0;
		CPyScene *scene_obj = (CPyScene *)pyScene;
		CCScene *scene = dynamic_cast<CCScene *>(scene_obj->getCCObject());
		if(!scene)
			return 0;
		ccColor3B col = !pyColor ? ccBLACK : ((CPyColor3B *)pyColor)->getCCObject();
		CC_METHOD_WRAPPER_GETER_RINT(CCTransitionFade *, CPyTransitionFade, initWithDuration, bool, t, scene
			, col);
		return 0;
	}

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionCrossFade, CPyTransitionCrossFade)
	PYCLASS_INIT_AND_BASE(CPyTransitionCrossFade, CPyTransitionScene, "CCTransitionCrossFade", "Python CCTransitionCrossFade Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionCrossFade)
	PYCLASS_END_METHOD_DEF(CPyTransitionCrossFade)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionCrossFade)
	PYCLASS_END_GETSET_DEF(CPyTransitionCrossFade)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionCrossFade)	
	TRANSITION_SCENE_INIT(CPyTransitionCrossFade, CCTransitionCrossFade)
	

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionTurnOffTiles, CPyTransitionTurnOffTiles)
	PYCLASS_INIT_AND_BASE_2(CPyTransitionTurnOffTiles, CPyTransitionScene, CPyTransitionEaseScene, "CCTransitionTurnOffTiles", "Python CCTransitionTurnOffTiles Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionTurnOffTiles)
	PYCLASS_END_METHOD_DEF(CPyTransitionTurnOffTiles)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionTurnOffTiles)
	PYCLASS_END_GETSET_DEF(CPyTransitionTurnOffTiles)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionTurnOffTiles)	
	TRANSITION_SCENE_INIT(CPyTransitionTurnOffTiles, CCTransitionTurnOffTiles)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSplitCols, CPyTransitionSplitCols)
	PYCLASS_INIT_AND_BASE_2(CPyTransitionSplitCols, CPyTransitionScene, CPyTransitionEaseScene, "CCTransitionSplitCols", "Python CCTransitionSplitCols Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSplitCols)
	PYCLASS_END_METHOD_DEF(CPyTransitionSplitCols)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSplitCols)
	PYCLASS_END_GETSET_DEF(CPyTransitionSplitCols)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSplitCols)
	TRANSITION_SCENE_INIT(CPyTransitionSplitCols, CCTransitionSplitCols)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionSplitRows, CPyTransitionSplitRows)
	PYCLASS_INIT_AND_BASE(CPyTransitionSplitRows, CPyTransitionSplitCols, "CCTransitionSplitRows", "Python CCTransitionSplitRows Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionSplitRows)
	PYCLASS_END_METHOD_DEF(CPyTransitionSplitRows)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionSplitRows)
	PYCLASS_END_GETSET_DEF(CPyTransitionSplitRows)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionSplitRows)
	TRANSITION_SCENE_INIT(CPyTransitionSplitRows, CCTransitionSplitRows)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFadeTR, CPyTransitionFadeTR)
	PYCLASS_INIT_AND_BASE_2(CPyTransitionFadeTR, CPyTransitionScene, CPyTransitionEaseScene, "CCTransitionFadeTR", "Python CCTransitionFadeTR Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFadeTR)
	PYCLASS_ADD_METHOD(CPyTransitionFadeTR, actionWithSize)
	PYCLASS_END_METHOD_DEF(CPyTransitionFadeTR)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFadeTR)
	PYCLASS_END_GETSET_DEF(CPyTransitionFadeTR)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFadeTR)
	TRANSITION_SCENE_INIT(CPyTransitionFadeTR, CCTransitionFadeTR)

	PYCLASS_METHOD_IMPL(CPyTransitionFadeTR, actionWithSize)
	{
		PyObject *pySize = NULL;
		if( !PyArg_ParseTuple(pyArgs, "O", &pySize) )
			Py_RETURN_NONE;

		if(!PyObject_TypeCheck(pySize, CPyClassBase::GetTypeObject<CPySize>()))
			Py_RETURN_NONE;
		
		if(!PyObject_TypeCheck(pySelf, CPyClassBase::GetTypeObject<CPyCCObject>()))
			Py_RETURN_NONE;

		CPySize *size = (CPySize *)pySize;
		CPyCCObject *obj = (CPyCCObject *)pySelf;
		CCTransitionFadeTR *scene = dynamic_cast<CCTransitionFadeTR *>(obj->getCCObject());
		if(!scene)
			Py_RETURN_NONE;

		return (PyObject *)CPyCCObject::create<CPyActionInterval>(scene->actionWithSize(size->getCCObject()));
	}

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFadeBL, CPyTransitionFadeBL)
	PYCLASS_INIT_AND_BASE(CPyTransitionFadeBL, CPyTransitionFadeTR, "CCTransitionFadeBL", "Python CCTransitionFadeBL Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFadeBL)
	PYCLASS_END_METHOD_DEF(CPyTransitionFadeBL)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFadeBL)
	PYCLASS_END_GETSET_DEF(CPyTransitionFadeBL)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFadeBL)
	TRANSITION_SCENE_INIT(CPyTransitionFadeBL, CCTransitionFadeBL)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFadeUp, CPyTransitionFadeUp)
	PYCLASS_INIT_AND_BASE(CPyTransitionFadeUp, CPyTransitionFadeTR, "CCTransitionFadeUp", "Python CCTransitionFadeUp Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFadeUp)
	PYCLASS_END_METHOD_DEF(CPyTransitionFadeUp)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFadeUp)
	PYCLASS_END_GETSET_DEF(CPyTransitionFadeUp)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFadeUp)
	TRANSITION_SCENE_INIT(CPyTransitionFadeUp, CCTransitionFadeUp)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionFadeDown, CPyTransitionFadeDown)
	PYCLASS_INIT_AND_BASE(CPyTransitionFadeDown, CPyTransitionFadeTR, "CCTransitionFadeDown", "Python CCTransitionFadeDown Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionFadeDown)
	PYCLASS_END_METHOD_DEF(CPyTransitionFadeDown)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionFadeDown)
	PYCLASS_END_GETSET_DEF(CPyTransitionFadeDown)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionFadeDown)
	TRANSITION_SCENE_INIT(CPyTransitionFadeDown, CCTransitionFadeDown)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionPageTurn, CPyTransitionPageTurn)
	PYCLASS_INIT_AND_BASE(CPyTransitionPageTurn, CPyTransitionScene, "CCTransitionPageTurn", "Python CCTransitionPageTurn Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionPageTurn)
	PYCLASS_ADD_METHOD(CPyTransitionPageTurn, actionWithSize)
	PYCLASS_END_METHOD_DEF(CPyTransitionPageTurn)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionPageTurn)
	PYCLASS_END_GETSET_DEF(CPyTransitionPageTurn)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionPageTurn)
	int CPyTransitionPageTurn::__init__(CPyTransitionPageTurn *pySelf, PyObject *pyArgs, PyObject *pyKW)
	{
		if( !pyArgs )
			return 0;
		static char* kwlist[] = {"t", "scene", "backwards", NULL};
		float t = 0;
		PyObject *pyScene = NULL;
		PyObject *pyBackwards = NULL;
		if(!PyArg_ParseTupleAndKeywords(pyArgs, pyKW, "fOO", kwlist, &t, &pyScene, &pyBackwards))
			return 0;
		if(!PyObject_TypeCheck(pyScene, CPyClassBase::GetTypeObject<CPyScene>()))
			return 0;
		CPyScene *scene_obj = (CPyScene *)pyScene;
		CCScene *scene = dynamic_cast<CCScene *>(scene_obj->getCCObject());
		if(!scene)
			return 0;
		CC_METHOD_WRAPPER_GETER_RINT(CCTransitionPageTurn *, CPyTransitionPageTurn, initWithDuration, bool, t, scene
			, pyBackwards == Py_True);
		return 0;
	}

	PYCLASS_METHOD_IMPL(CPyTransitionPageTurn, actionWithSize)
	{
		PyObject *pySize = NULL;
		if( !PyArg_ParseTuple(pyArgs, "O", &pySize) )
			Py_RETURN_NONE;

		if(!PyObject_TypeCheck(pySize, CPyClassBase::GetTypeObject<CPySize>()))
			Py_RETURN_NONE;
		
		if(!PyObject_TypeCheck(pySelf, CPyClassBase::GetTypeObject<CPyCCObject>()))
			Py_RETURN_NONE;

		CPySize *size = (CPySize *)pySize;
		CPyCCObject *obj = (CPyCCObject *)pySelf;
		CCTransitionPageTurn *scene = dynamic_cast<CCTransitionPageTurn *>(obj->getCCObject());
		if(!scene)
			Py_RETURN_NONE;

		return (PyObject *)CPyCCObject::create<CPyActionInterval>(scene->actionWithSize(size->getCCObject()));
	}

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgress, CPyTransitionProgress)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgress, CPyTransitionScene, "CCTransitionProgress", "Python CCTransitionProgress Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgress)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgress)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgress)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgress)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgress)
	TRANSITION_SCENE_INIT(CPyTransitionProgress, CCTransitionProgress)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgressRadialCCW, CPyTransitionProgressRadialCCW)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgressRadialCCW, CPyTransitionProgress, "CCTransitionProgressRadialCCW", "Python CCTransitionProgressRadialCCW Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgressRadialCCW)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgressRadialCCW)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgressRadialCCW)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgressRadialCCW)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgressRadialCCW)
	TRANSITION_SCENE_INIT(CPyTransitionProgressRadialCCW, CCTransitionProgressRadialCCW)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgressRadialCW, CPyTransitionProgressRadialCW)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgressRadialCW, CPyTransitionProgress, "CCTransitionProgressRadialCW", "Python CCTransitionProgressRadialCW Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgressRadialCW)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgressRadialCW)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgressRadialCW)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgressRadialCW)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgressRadialCW)
	TRANSITION_SCENE_INIT(CPyTransitionProgressRadialCW, CCTransitionProgressRadialCW)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgressHorizontal, CPyTransitionProgressHorizontal)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgressHorizontal, CPyTransitionProgress, "CCTransitionProgressHorizontal", "Python CCTransitionProgressHorizontal Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgressHorizontal)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgressHorizontal)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgressHorizontal)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgressHorizontal)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgressHorizontal)
	TRANSITION_SCENE_INIT(CPyTransitionProgressHorizontal, CCTransitionProgressHorizontal)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgressVertical, CPyTransitionProgressVertical)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgressVertical, CPyTransitionProgress, "CCTransitionProgressVertical", "Python CCTransitionProgressVertical Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgressVertical)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgressVertical)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgressVertical)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgressVertical)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgressVertical)
	TRANSITION_SCENE_INIT(CPyTransitionProgressVertical, CCTransitionProgressVertical)
	
	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgressInOut, CPyTransitionProgressInOut)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgressInOut, CPyTransitionProgress, "CCTransitionProgressInOut", "Python CCTransitionProgressInOut Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgressInOut)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgressInOut)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgressInOut)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgressInOut)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgressInOut)
	TRANSITION_SCENE_INIT(CPyTransitionProgressInOut, CCTransitionProgressInOut)

	CCNODE_OBJECT_WRAPPER_IMPL(CCTransitionProgressOutIn, CPyTransitionProgressOutIn)
	PYCLASS_INIT_AND_BASE(CPyTransitionProgressOutIn, CPyTransitionProgress, "CCTransitionProgressOutIn", "Python CCTransitionProgressOutIn Object");
	PYCLASS_BEGIN_METHOD_DEF(CPyTransitionProgressOutIn)
	PYCLASS_END_METHOD_DEF(CPyTransitionProgressOutIn)
	PYCLASS_BEGIN_GETSET_DEF(CPyTransitionProgressOutIn)
	PYCLASS_END_GETSET_DEF(CPyTransitionProgressOutIn)
	PYCLASS_IMP_INTERFACE_NOINIT(CPyTransitionProgressOutIn)
	TRANSITION_SCENE_INIT(CPyTransitionProgressOutIn, CCTransitionProgressOutIn)

NS_CCPY_END

#endif